package com.glory.erp.task;

import java.math.BigInteger;
import java.util.Date;
import java.util.List;

import org.springframework.mail.MailSender;
import org.springframework.mail.SimpleMailMessage;

import com.glory.erp.invoice.goods.service.GoodsService;
import com.glory.erp.util.FormatUtil;

/**
 * @Description: 定时器
 * @Title: TimerTask.java
 * @Author: 樊双峰
 * @Date: 2018年6月10日 下午4:18:16
 * @Version V1.0
 */
public class TimerTask {

	private GoodsService goodsService;
	private MailSender mailSender;
	
	public void setGoodsService(GoodsService goodsService) {
		this.goodsService = goodsService;
	}

	public void setMailSender(MailSender mailSender) {
		this.mailSender = mailSender;
	}

	/**
	 * 
	 * @Description: 商品使用次数更新定时器
	 * @Title: goodsUseNumUpdate
	 * @Author: 樊双峰
	 * @Param: 
	 * @return: void
	 * @Date: 2018年6月10日 下午6:15:40
	 * @throws
	 */
	public void goodsUseNumUpdate(){
		System.out.println("商品使用频度更新定时任务进行中......");
		goodsService.goodsUseNumUpdate();
	}
	
	/**
	 * 
	 * @Description: 库存预警
	 * @Title: storeWarn
	 * @Author: 樊双峰
	 * @Param: 
	 * @return: void
	 * @Date: 2018年6月10日 下午6:16:19
	 * @throws
	 */
	public void storeWarn(){
		System.out.println("库存预警定时任务进行中......");
		// 获取需要预警的数据，然后发送Email
		List<Object[]> warnList = goodsService.findWarnInfo();
		StringBuilder info = new StringBuilder();
		for (Object[] objects : warnList) {
			BigInteger maxFlag = (BigInteger) objects[1];
			if(maxFlag.intValue() == 1){
				String name = objects[0].toString();
				// 超过上限
				info.append("商品【");
				info.append(name);
				info.append("】库存超过上限，请停止补货！\r\n");
				continue;
			}
			BigInteger minFlag = (BigInteger) objects[2];
			if(minFlag.intValue() == 1){
				String name = objects[0].toString();
				info.append("商品【");
				info.append(name);
				info.append("】库存低于下限，请及时补货！\r\n");
			}
		}
		// 1.获取Email发送器的对象
		// MailSender mailSender = null;
		// 2.组织要发送的Email信息内容
		SimpleMailMessage smm = new SimpleMailMessage();
		// 发送方 必须设置
		smm.setFrom("1085649552@qq.com");
		// 接收方
		smm.setTo("shuangfeng.fan@gloryit.com");
		// 主题
		smm.setSubject("库存预警["+FormatUtil.formatDate(System.currentTimeMillis())+"]");
		// 内容
		smm.setText(info.toString());
		// 即时发送
		smm.setSentDate(new Date());
		// 3.发送Email
		mailSender.send(smm);
		System.out.println("发送完毕");
	}
}